package org.jeecg.modules.wechat.service;

import org.jeecg.common.base.BaseMap;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * @author 影子
 */
public interface WechatPaymentService {


    /**
     * 微信商品支付
     *
     * @param payParam
     * @return
     */
    public BaseMap weChatDoUnifiedOrder(BaseMap payParam) throws Exception;


    /**
     * 微信支付回调通知
     *
     * @param
     * @return
     */
    public BaseMap weChatNotificationHandler(HttpServletRequest request,String mchid);

    /**
     * 微信关闭订单
     *
     * @param outTradeNo
     * @return
     */
    public BaseMap closeOrder(String outTradeNo);

    /**
     * 微信查询订单
     *
     * @param outTradeNo
     * @return
     */
    public BaseMap queryOrder(String outTradeNo);

    /**
     * 申请退款
     *
     * @param
     * @return
     */
    public BaseMap weChatPayRefundsNotify(HttpServletRequest request,String mchid);


    /**
     * 微信退款
     *
     * @param map 订单号
     * @return
     */
    public BaseMap weChatRefunds(BaseMap map);

    public boolean sendVerifyCode(String[] phoneNumber,String sysOrg);

    public boolean fnverifyCode(String phoneNumber, String inputCode,String openId);
    
    /**
     * 微信商品支付（指定商户）
     *
     * @param payParam
     * @param mchId 商户号
     * @return
     */
    public BaseMap weChatDoUnifiedOrder(BaseMap payParam, String mchId) throws Exception;

    /**
     * 微信关闭订单（指定商户）
     *
     * @param outTradeNo 订单号
     * @param mchId 商户号
     * @return
     */
    public BaseMap closeOrder(String outTradeNo, String mchId);

    /**
     * 查询订单（指定商户）
     *
     * @param outTradeNo 订单号
     * @param mchId 商户号
     * @return
     */
    public BaseMap queryOrder(String outTradeNo, String mchId);

    /**
     * 微信退款（指定商户）
     *
     * @param map 订单号
     * @param mchId 商户号
     * @return
     */
    public BaseMap weChatRefunds(BaseMap map, String mchId);
}